import os
from configparser import ConfigParser
# load_dotenv: 从 .env 文件加载环境变量到 os.environ
from dotenv import load_dotenv

# __file__ 是当前脚本文件的路径。
_conf_dir = os.path.dirname(__file__)
# 将目录路径和配置文件名拼接成完整的文件路径
_conf_file = os.path.join(_conf_dir, 'config.ini')

# 继承 ConfigParser 类，添加 as_dict() 方法，将配置内容转换为字典格式。
# self._sections 是 ConfigParser 内部存储配置节的属性，包含了所有配置节及其键值对
class MyParser(ConfigParser):
    def as_dict(self):
        d = dict(self._sections)
        return d


# 读取配置文件的函数

def _get_all_conf():
    # 创建自定义解析器实例 _config。
    _config = MyParser()
    result = {}
    # 检查配置文件是否存在（os.path.isfile()）。
    if os.path.isfile(_conf_file):
        try:
            # 使用 _config.read() 读取配置文件，指定编码为 UTF-8。
            _config.read(_conf_file, encoding='utf-8')
            # 调用 as_dict() 方法将配置转换为字典。
            result = _config.as_dict()
        except OSError:
            # 异常处理：如果读取失败，抛出包含错误信息的 ValueError。
            raise ValueError('Read config file faild:%s' % OSError)
    return result


# 加载配置并提取特定配置项
# 调用 _get_all_conf() 函数获取所有配置
config = _get_all_conf()
# 从配置字典中提取 mysql 和 smtp 两个配置节，分别存储到 mysql_cfg 和 smtp_cfg 变量中。
mysql_cfg = config['mysql']
smtp_cfg = config['smtp']

from config.constants import *


templates_path = os.path.join(TEMPLATES_PATH, 'login_png')

# 设备与应用配置
TEST_CONFIG = {
    "device_uri": "Android://127.0.0.1:5037/emulator-5554",  # 设备连接地址
    "package_name": "com.kongfz.app",  # 应用包名
    "test_account": "15835440857",  # 测试账号
    "test_password": "123456Aa",  # 测试密码
    "templates": {
        "gw": rf"{templates_path}\gw.png",
        "my_tab": rf"{templates_path}\my_tab.png",         # “我的”标签页
        "phone_input": rf"{templates_path}\phone.png",    # 手机号输入框
        "password_input": rf"{templates_path}\password.png", # 密码输入框
        "agree_checkbox": rf"{templates_path}\http_click.png", # 协议勾选框
        "login_button": rf"{templates_path}\login_click.png",   # 登录按钮
        "success_flag": rf"{templates_path}\asser_login.png"    # 登录成功标识
    }
}




